/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlet;

import exception.BuildNameNotSetException;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.ConfigManager;

/**
 *
 * @author pyin
 */
public class GetBuildNameServlet extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
//        response.setContentType("text/html;charset=UTF-8");
//        PrintWriter out = response.getWriter();
//        try {
//            if (ConfigManager.getBuildName() == null) {
//                out.println("oops, you should set build name before start test.");
//            } else {
//                out.println(ConfigManager.getBuildName());
//            }
//        } finally {
//            out.close();
//        }
    }
    
    private String[] getAllBuilds(){
        File folder = new File(ConfigManager.getInstallerPath());
        return folder.list();
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        
        try {
                out.println("<div class='build_name'><h1>"+ConfigManager.getBuildName()+"</h1></div>");
        } catch(BuildNameNotSetException e){
                out.println("<div id='buildName_warning' class='warning'><h3>It seems you haven't set the build name, the system has detected some builds in the build folder, you could set the build name by click the links below, or use 'sb' command</h3><br>");
                String[] builds = getAllBuilds();
                for(int i=0;i<builds.length;i++){
                    out.print("<div class='h2'><a href='#' onClick=\"setBuildName('"+builds[i]+"')\">"+builds[i]+"</a><br></div>");
                }
                out.print("</div>");
        }
        finally {
            out.close();
        }
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
